package model_layer;

/**
 * Class used for manipulation the data of a customer as an Object of type customer.
 * Customers are not deleted from the system, they are just marked as such
 * (changing the value of the field isDeleted), but still stored in the system
 * for further reference and safety purposes.
 */
public class Customer
{

	private String id;
	private String phone_nr;
	private String email;
	private String name;
	private String address;
	private String zipcode;
	private String city;
	private float discount;
	private boolean deleted;

	/**
	 * Instantiates a new customer.
	 */
	public Customer()
	{
	}

	/**
	 * Method for getting the id of a customer.
	 *
	 * @return String value with the customer's id.
	 */
	public String getId()
	{
		return id;
	}

	/**
	 * Method for returning the Phone Number of a customer.
	 *
	 * @return the customer's phone number as a String value
	 */
	public String getPhone_nr()
	{
		return phone_nr;
	}

	/**
	 * Gets the email of a customer.
	 *
	 * @return String value with the email of the customer.
	 */
	public String getEmail()
	{
		return email;
	}

	/**
	 * Returns the name of the customer.
	 *
	 * @return A String containing the name of the customer.
	 */
	public String getName()
	{
		return name;
	}

	/**
	 * Method for returning the address of the customer.
	 *
	 * @return String Value with his address.
	 */
	public String getAddress()
	{
		return address;
	}

	/**
	 * Method for getting the Zip Code of the Area a customer is living.
	 *
	 * @return A String value with the Zip Code of the customer.	 
	 */
	public String getZipcode()
	{
		return zipcode;
	}

	/**
	 * Gets the city a customer is living in.
	 *
	 * @return The customer's city as a String value.
	 */
	public String getCity()
	{
		return city;
	}
	
	/**
	 * Gets the discount, set to a certain customer.
	 * @return float value with the discount of the customer.
	 */
	public float getDiscount()
	{
		return discount;
	}
	
	/**
	 * Checks if a customer has been marked as deleted in the system.
	 *
	 * @return A Boolean value that marks the statement (e.g. - true, if the customer has been deleted).
	 */
	public boolean isDeleted()
	{
		return deleted;
	}

	/**
	 * Method used for setting/changing the value of the ID of a customer.
	 *
	 * @param id a String value that stores the desired new value for the "id" field.
	 */
	public void setId(String id)
	{
		this.id = id;
	}

	/**
	 * Sets the phone number of a customer.
	 *
	 * @param phone_nr String value with the phone number of a customer.
	 */
	public void setPhone_nr(String phone_nr)
	{
		this.phone_nr = phone_nr;
	}

	/**
	 * Sets the email of a customer.
	 *
	 * @param email a String value with the desired new email.
	 */
	public void setEmail(String email)
	{
		this.email = email;
	}

	/**
	 * Sets the name of a customer.
	 *
	 * @param name String value with his name.
	 */
	public void setName(String name)
	{
		this.name = name;
	}

	/**
	 * Method for changing/setting the value of the customer's address.
	 *
	 * @param address String value of the address of the customer.
	 */
	public void setAddress(String address)
	{
		this.address = address;
	}

	/**
	 * Setting the Customer's Zip Code.
	 *
	 * @param zipcode String value of the Zip Code.
	 */
	public void setZipcode(String zipcode)
	{
		this.zipcode = zipcode;
	}

	/**
	 * Changes the value of the city of the Customer he is living in.
	 *
	 * @param city  A String value with the customer's city.
	 */
	public void setCity(String city)
	{
		this.city = city;
	}
	
	/**
	 * Changes the value of the discount of a customer.
	 * @param discount float value with the desired new discount
	 */
	public void setDiscount(float discount)
	{
		this.discount = discount;
	}

	/**
	 * Changes the value of the isDeleted field.
	 * @param Boolean value with the statement a customer should be marked as (e.g. true if he is marked as deleted).
	 */
	public void setDeleted(boolean deleted)
	{
		this.deleted = deleted;
	}
	
	

}
